package com.atguigu.gulimall.product.service.impl;

import jdk.nashorn.internal.ir.CallNode;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.atguigu.common.utils.PageUtils;
import com.atguigu.common.utils.R;
import com.atguigu.common.utils.Query;

import com.atguigu.gulimall.product.dao.AttrGroupDao;
import com.atguigu.gulimall.product.entity.AttrGroupEntity;
import com.atguigu.gulimall.product.service.AttrGroupService;


@Service("attrGroupService")
public class AttrGroupServiceImpl extends ServiceImpl<AttrGroupDao, AttrGroupEntity> implements AttrGroupService {
    //第一个封装分页信息， 第二个封装查询条件   没有任何条件时候查询所有
    // IPage<AttrGroupEntity>分页信息   Query<AttrGroupEntity>()查询 信息
    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        IPage<AttrGroupEntity> page = this.page(
                new Query<AttrGroupEntity>().getPage(params),
                new QueryWrapper<AttrGroupEntity>()
        );

        return new PageUtils(page);
    }

    /**
     * 前端规定没有三级分类， 三级分类就传0
     * @param params
     * @param catelogId
     * @return
     * PageUtils  封装好的分页 工具类
     */
    @Override
    public PageUtils queryPage(Map<String, Object> params, Long catelogId) {
        if (catelogId ==0){//前端规定没有三级分类， 三级分类就传0
            //getPage 得到分页信息，和 页面 内容
            //new QueryWrapper<AttrGroupEntity>()  查询条件
            //返回 page
            IPage<AttrGroupEntity> page = this.page(new Query<AttrGroupEntity>().getPage(params),
                   new QueryWrapper<AttrGroupEntity>());
            return new PageUtils(page);
        }else {
            //检索条件不是空的，就拿这个进行查询
            String key = (String) params.get("key");
//            select * from pms_attr_group where catelog_id = ? and (attr_group_id=key or arrt_group_name like %key% )
            //or 是效果好关系
            //查询条件 用  这个构造
            QueryWrapper<AttrGroupEntity> wrapper = new QueryWrapper<AttrGroupEntity>().eq("catelog_id",catelogId);
            if (StringUtils.isEmpty(key)) {
                wrapper.and((obj)->{//可以接受函数式  编程  like双百分号的 like
                    obj.eq("attr_group_id",key).or().like("arrt_group_name",key);//分组id等于指定值
                    });
            }
            IPage<AttrGroupEntity> page = this.page(new Query<AttrGroupEntity>().getPage(params),
                    new QueryWrapper<AttrGroupEntity>());
        }
        return null;
    }

}
